import { createApp } from 'vue'
import App from './App.vue'
import useRouter from './router'

let app: any = null
let router: any = null
let history: any = null

// 将渲染操作放入 mount 函数
function mount() {
    app = createApp(App)
    router = useRouter
    app.use(router)
    app.mount('#app1')

    console.log('微应用micro-vue渲染了')
}

// 页面刷新时，浏览器地址保持不变， 这个我忘了是怎么弄来着，router好像可以这么弄。获取到当前路径，然后页面刷新时，直接重定向回来

// 将卸载操作放入 unmount 函数
function unmount() {
    app?.unmount()
    history?.destroy()
    app = null
    router = null
    history = null
    console.log('微应用micro-vue卸载了')
}

// 微前端环境下，注册mount和unmount方法 --- 因为禁用了沙箱所以这里失效了
if (window.__MICRO_APP_ENVIRONMENT__) {
  console.log('微前端环境下，注册mount和unmount方法');
    // @ts-ignore
    window[`micro-app-${window.__MICRO_APP_NAME__}`] = { mount, unmount }
} else {
    // 非微前端环境直接渲染
    mount()
}

